import { isCardID, isUrl } from 'mall-utils'

// 去掉前后空格
function Trim (str) {
  if (!str) return ''
  return str.replace(/(^\s*)|(\s*$)/g, '')
}

// 手机号码验证
function phoneCheck (value) {
  // value = Trim(value)
  const phone = /^(((1[0-9]{2})|(15[0-9]{1})|(18[0-9]{1})|(17[0-9]{1}))+\d{8})$/.test(value)
  return phone
}

// 字母、数字、字符组成的6-16位密码
function PasswordCheck (value) {
  // value = Trim(value)
  // const password = new RegExp('(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[^a-zA-Z0-9]).{6,16}').test(value)
  const password = /^(?![0-9]+$)(?![a-zA-Z]+$)(?!([^(0-9a-zA-Z)])+$)^.{6,16}$/.test(value)
  return password
}

// 邮箱校验
function emailCheck (value) {
  // value = Trim(value)
  const email = /^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/.test(value)
  return email
}

// 身份证号码验证
function idCardCheck (value) {
  return isCardID(value)
}

// 纯数字校验
function NumCheck (value) {
  // value = Trim(value)
  const Num = /^[0-9]*$/.test(value)
  return Num
}

// 检验空格
// function spaceCheck (value) {
//   return /^\s+$/gi.test(value)
// }

export default {
  spaceValidator: (rule, value, callback) => {
    if (/^\s+$/gi.test(value)) {
      callback(new Error('不能只输入空格'))
    } else {
      callback()
    }
  },
  NumValidator: (rule, value, callback) => {
    if (NumCheck(value)) {
      callback()
    } else {
      callback(new Error('只能输入数字'))
    }
  },
  PasswordValidator: (rule, value, callback) => {
    if (PasswordCheck(value)) {
      callback()
    } else {
      callback(new Error('请输入由字母、数字、字符组成的6-16位密码'))
    }
  },
  emailValidator: (rule, value, callback) => {
    if (emailCheck(value)) {
      callback()
    } else {
      callback(new Error('请输入正确的邮箱地址'))
    }
  },
  urlValidator: (rule, value, callback) => {
    if (isUrl(value)) {
      callback()
    } else {
      callback(new Error('请输入正确的URL地址'))
    }
  },
  idcardValidator: (rule, value, callback) => {
    if (!value) return callback()
    if (idCardCheck(value)) {
      callback()
    } else {
      callback(new Error('请输入正确的身份证号码'))
    }
  },
  phoneValidator: (rule, value, callback) => {
    if (!value) return callback()
    if (phoneCheck(value)) {
      callback()
    } else {
      callback(new Error('请输入正确的手机号'))
    }
  },
  wxValidator: (rule, value, callback) => {
    const reg = /^[a-zA-Z]([-_a-zA-Z0-9]{5,19})+$/
    if (!value) return callback()
    if (reg.test(value)) {
      callback()
    } else {
      callback(new Error('请输入正确的微信号'))
    }
  },
  qqValidator: (rule, value, callback) => {
    const reg = /^[1-9][0-9]{4,10}$/
    if (!value) return callback()
    if (reg.test(value)) {
      callback()
    } else {
      callback(new Error('请输入正确的QQ号'))
    }
  }

}
